package com.study.spring_ai.model.image;



import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.content.Media;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.Map;

@RestController
public class ImageController {
    private final ChatModel chatModel;

    public ImageController(ChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @PostMapping("/analyze")
    public String analyzeImage(@RequestPart MultipartFile image) throws IOException {
        // 构造多模态请求（文本 + 图像）
        Media imageMedia = new Media(MediaType.parseMediaType(image.getContentType()), image.getResource());
        UserMessage message = UserMessage.builder().media(imageMedia).text("描述图片内容").build();
        // 指定多模态模型（如 llava）
        return chatModel.call(Prompt.builder()
                        .chatOptions(ChatOptions.builder().model("llava").build()).build())
                .getResult().getOutput().getText();
    }
}